package code13;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.junit.Test;

public class Test01 {
	@Test
	public void f1() {
		List<Integer> list = new ArrayList<Integer>();
		// 常用方法
		// 把一个或多个元素添加到指定集合
		Collections.addAll(list, 12,11,3,8,5,11,11,222,333);
		System.out.println("addAll:"+list);
		
		// 找出最大的元素
		System.out.println("max:" + Collections.max(list));
		// 根据指定的排序规则, 找出最大的元素
		System.out.println("max:" + Collections.max(
				list, 
				new Comparator<Integer>() {
					@Override
					public int compare(Integer o1, Integer o2) {
						return o2 - o1;// 降序， 会导致 max 返回的是最小值
					}
				}));
		// 找出最小的元素
		System.out.println("min:" + Collections.min(list));
		
		// 排序, 默认升序
		Collections.sort(list);
		System.out.println("sort1:"+list);
		Collections.sort(list, new Comparator<Integer>() {
			@Override
			public int compare(Integer o1, Integer o2) {
				return o2 - o1;// 降序
			}
		});
		System.out.println("sort2:"+list);
		System.out.println("--------------");
		
		// reverse 反转集合内的元素
		Collections.reverse(list);
		System.out.println("reverse:"+list);
		
		// 替换集合中所有 和指定的值相等元素 为 其他的值
		Collections.replaceAll(list, 11, 666);
		System.out.println("replaceAll:"+list);
		
		// 替换集合中两个位置的元素
		Collections.swap(list, 1, 5);
		System.out.println("swap:"+list);
		
		// shuffle 随机排序
		Collections.shuffle(list);
		System.out.println("shuffle:" + list);
		
		// 填充, 使用 指定的值 替换所有元素
		Collections.fill(list, 1);
		System.out.println("fill:" + list);
		
		// 获取 同步(线程安全)的集合
		//Collections.synchronizedList(list);
		//Collections.synchronizedSet(set);
		//Collections.synchronizedMap(map);
	}
	
}
